Azure AD から AWS IAM Identity Center にユーザーを同期するときに「姓」「名」情報がない場合に発生する同期エラーの対処方法の一例
AWS IAM Identity Center は外部 ID プロバイダーとユーザー情報を同期することができ、自動同期(自動プロビジョニング)に対応しているサービスの 1 つに Azure AD があります。
自動同期は便利ですが、Azure AD 側で任意の属性情報である「姓」「名」が AWS IAM Identity Center 側では必須属性となっていることから、Azure AD で「姓」「名」が登録されていない場合に同期エラーとなることがあります。その対処として「姓」「名」が登録されていない場合(null の場合)は指定の文字列を格納して同期できるため、その方法を紹介します。
以前に AWS IAM Identity Center と Azure AD の同期については次のブログで紹介しています。本ブログでは、これから記載する回避策である属性マッピングの設定が反映されています。本ブログはその設定について改めて動作を確認した結果をまとめたものです。そのため、もし同期設定を知りたい方は下記ブログを参照していただけると幸いです。
Azure AD ユーザーに「姓」「名」が登録されていない場合の同期エラー
冒頭で紹介したブログに沿って、AWS IAM Identity Center と Azure AD の自動プロビジョニングを設定する際に、属性マッピングの設定をしない場合の動作をまずは確認します。
同期エラーを確認するために用意した Azrue AD のユーザー設定です。ドメインは例示の内容に置換しています。
ユーザー名 | 表示名 | 姓 | 名 |
---|---|---|---|
[email protected] | Dev1 | Dev | One |
[email protected] | Dev2 | - | - |
Azure ポータル上でのユーザー情報画面です。Dev2 ユーザーの「姓」「名」は登録情報がありません。
上記ユーザーを AWS IAM Identity Center との自動プロビジョニングを設定したエンタープライズアプリケーションに割り当てた後の AWS IAM Identity Center 側のユーザーです。Dev1 ユーザーのみ同期されていることが確認できます。2 行目のマスキングユーザーは今回の検証とは関係ないユーザーです。
Azure AD のプロビジョニングログからも Dev2 ユーザーが同期に失敗していることが分かります。同期エラーの詳細は「ダウンロード」からログをダウンロードしてエラーメッセージを確認したり、シングルサインオンメニューから Test することで確認したりできます。
Dev2 ユーザーが AWS IAM Identity Center 側への同期に失敗するのは、AWS IAM Identity Center 側において「姓」「名」が必須の属性であるためです。ユーザーガイドにおいても自動プロビジョニングのためには「姓」「名」を入力する必要がある旨の記載があります。
ユーザーの追加 - AWS IAM Identity Center (successor to AWS Single Sign-On)
以降は解決策について記載します。
同期エラーへの対処方法
前述した同期エラーへの対処方法には主に 2 つの方法があります。
1 つは単純に Azure AD ユーザーに「姓」「名」を登録することです。
もう 1 つは AWS IAM Identity Center との同期を設定しているエンタープライズアプリケーションにおいて、プロビジョニングの属性マッピングを設定することです。今回はこちらの方法を試します。
具体的には、属性マッピングの設定により「姓」「名」の登録が無い場合(null の場合)に任意の文字列を代入する対処ができます。
設定はエンタープライズアプリケーションのプロビジョニング設定から実施します。マッピングの設定から「Provision Azure Active Directory Users」を選択します。
マッピング設定は、Azure AD のユーザー属性情報が AWS IAM Identity Center のユーザー属性情報にどのようにマッピングされるかを定義しています。この定義の「姓(surname)」「名(givenName)」を変更します。
まず、givenName から設定します。設定は単純であり「null の場合の既定値 (オプション)」に、値がない場合に代わりに格納する文字列を記載するだけです。今回はnull
としました。
surname も同様にnull
を指定します。
忘れがちなのですが、マッピングの変更後には「保存」をクリックします。
以上で設定完了です。
改めて同期結果を見てみます。
しばらく時間を空けて確認してみると Dev2 ユーザーが AWS IAM Identity Center 側に同期されていました。
Dev1 ユーザーと Dev2 ユーザーの属性情報を比べてみると、Dev2 ユーザーの「姓」「名」には属性マッピングで指定した文字列であるnull
が格納されていることが分かります。
Azure AD のプロビジョニングログでも Dev2 ユーザーの同期がSuccess
となっていることを確認できます。
以上で確認を終わります。
さいごに
以前から属性マッピングの設定をすることで Azure AD 側に「姓」「名」の属性情報が無い場合の AWS IAM Identity Center への同期エラーを回避できることは知っていたのですが、今回動作を改めて確認する機会がありましたので、備忘録を兼ねてブログ化しました。
以上、このブログがどなたかのご参考になれば幸いです。